home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / DJSRC106.ARJ / TASK.H < prev    next >
C/C++ Source or Header  |  1991-03-20  |  731b  |  46 lines

  1. #ifndef _task_h_
  2. #define _task_h_
  3.  
  4. #include <setjmp.h>
  5.  
  6. typedef int (TaskProc)(int, void*);
  7.  
  8. class Task {
  9.   public:
  10.   Task *prev; // links into run-state queues
  11.   Task *next;
  12.   Task *parent;
  13.  
  14.   jmp_buf state;
  15.  
  16.   unsigned *stack;
  17.   unsigned stack_len;
  18.  
  19.   enum RunState {
  20.     Running,
  21.     Blocked,
  22.     Waiting,
  23.     Dead
  24.   };
  25.   RunState run_state;
  26.  
  27.   int ret_val;
  28.  
  29.   friend int fall_off_end();
  30.  
  31. public:
  32.   
  33.   Task(TaskProc proc=0, int val=0, void* ptr=0, int stacksize=1024); // use default proc in main() to setup initial task
  34.   ~Task();
  35.   
  36.   int ReturnValue();
  37.   
  38.   friend int Wait(Task* child=0);
  39.   friend void Return(int rv=0);
  40.   friend void Yield();
  41. };
  42.  
  43. extern Task *thisTask;
  44.  
  45. #endif
  46.